﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Proxy;
using Microsoft.Reporting.WebForms;
using SIM.Geo.UI.Clases;

namespace SIM.Geo.UI.Reportes
{
    public partial class frmVisorAvanceLabor : PageBase
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                int codigoAvanceDiario = int.Parse(Request.Params["cod"]);
                VerReporte(codigoAvanceDiario);
            }
        }

        private void VerReporte(int codigoAvanceLabor)
        {
            try
            {

                this.rv.Reset();
                this.rv.Visible = true;
                this.rv.ProcessingMode = ProcessingMode.Local;

                string path = HttpContext.Current.Server.MapPath("~/Reportes/");
                this.rv.LocalReport.ReportPath = path + "repAvanceLabor1.rdlc";

                ReportDataSource datos = null;

                //AVANCE DIARIO

               

                List<DTOAvanceLaborResponse> labores = new List<DTOAvanceLaborResponse>();
                loadDatos(codigoAvanceLabor, labores);
                DTOAvanceLaborResponse[] laboresToArray = labores.ToArray(); 
                datos = new ReportDataSource()
                {
                    Name = "repAvanceLabor",
                    Value = laboresToArray
                };
                rv.LocalReport.DataSources.Add(datos);


                List<ReportParameter> parametros = new List<ReportParameter>();

                using (var proxy = new SEAvanceLaborClient())
                {
                    var item = proxy.ObtenerAvanceLabor(codigoAvanceLabor);
                    parametros.Add(new ReportParameter("Semana",Convert.ToString(item.Semana) ));
                    parametros.Add(new ReportParameter("Mes", Convert.ToString(item.Mes)));
                    parametros.Add(new ReportParameter("Anio", Convert.ToString(item.Anio)));
                    parametros.Add(new ReportParameter("FechaFin", Convert.ToString(item.FechaFin)));
                    parametros.Add(new ReportParameter("FechaInicio", Convert.ToString(item.FechaInicio)));
                    parametros.Add(new ReportParameter("AvanceTotal", Convert.ToString(item.AvanceTotal)));
                    parametros.Add(new ReportParameter("Codigo", Convert.ToString(item.CodigoAvanceLabor)));

                }
                rv.LocalReport.SetParameters(parametros);


                rv.LocalReport.Refresh();
                rv.DataBind();

            }
            catch (Exception ex)
            {

                Logger.Error("frmVisor:ibtnFinalizar_Click", ex);
            }
        }

        private static void loadDatos(int codigoAvanceLabor, List<DTOAvanceLaborResponse> labores)
        {
            using (var proxyDeta = new SEDetalleAvanceLaborClient())
            {
                var detalleAvance = proxyDeta.ListarDetalleAvanceLabor(codigoAvanceLabor);
                foreach (var item in detalleAvance)
                {
                    DTOAvanceLaborResponse obj = new DTOAvanceLaborResponse();
                    using (var proxyPuntoTopo = new SEPuntoTopograficoClient())
                    {
                        var dato = proxyPuntoTopo.ObtenerPuntoTopografico(item.CodigoPuntoTopograficoActual);
                        var dato2 = proxyPuntoTopo.ObtenerPuntoTopografico(item.CodigoPuntoTopograficoAnterior);
                        obj.CActual = dato.Nombre;
                        obj.CAnterior = dato2.Nombre;
                    }
                    using (var proxyLabor = new SELaborClient())
                    {
                        var objLabor = proxyLabor.Obtener(item.CodigoLabor);
                        obj.Labor = objLabor.NombreLabor;
                        obj.Nivel = objLabor.Nivel;
                        using (var proxyCuerpo = new SECuerpoClient())
                        {
                            obj.Cuerpo = "";
                            var objCuerpo = proxyCuerpo.ObtenerCuerpo(Convert.ToInt32(objLabor.CodigoCuerpo));
                            if (objCuerpo != null) obj.Cuerpo = objCuerpo.Nombre;
                        }

                    }
                    obj.CActual2 = Convert.ToString(item.ContraActual);
                    obj.CAnterior2 = Convert.ToString(item.ContraAnterior);
                    obj.Avance = Convert.ToDouble(item.Avance);
                    obj.Observacion = item.Observacion;

                    labores.Add(obj);
                }
            }
        }
    }



}